package com.achievo.know.application;

import java.util.List;
import java.util.Map;

import com.achievo.know.domain.Role;
import com.achievo.know.domain.User;

public interface UserApplication {

	/**
	 * 根据用户名密码验证
	 * 备注：我们注意到在用用户名密码验证前，我先去目录中取到了它的DN，这是因为getContext方法中参数userDn必须是一个完整的全路径DN
	 * 。否则它不知道去哪找这个用户，而且登录的用户也不一定都统一放在一个目录路径下
	 * 
	 * @param userName
	 * @param credentials
	 * @return
	 */
	public int authenticate(String userName, String credentials);
	
	/**
	 * 获取所有用户
	 * @return
	 */
	public List<User> getAllPersons();
	/**
	 * 数据同步：第一次
	 */
	public void dataSyncFirst();
	
	public void bulkSave(List<User> users, Role commonEmp);
	
	public void bulkDisabled(List<User> users);
	/**
	 * 数据同步：每天运行
	 */
	public void dataSyncDaily();
	
	public void dataSyncDaily1();

	public User get(String username);

	public Map<String, String> findUserAuth(User loginUser);

	public List<Long> findUserCates(User loginUser);
	
	public List<Long> findAdminCates(User loginUser);
	
	public void createUser(User loginUser);

	public List<String> getAllUnit();

	public List<User> getPersonsByOu(String unit);
	
	public List<User> getUserByUid(String uid);
}
